﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using blacksoft.Models;
using System.Security.Cryptography;
using System.Text;
using blacksoft.Constantes;
namespace blacksoft.Controllers
{
    public class CambiarContraseñaController : Controller
    {
        private inf245travelbusEntities db = new inf245travelbusEntities();
        // GET: CambiarContraseña
        public ActionResult Index()
        {
            //NO ESTOY LOGUEADO EN EL SISTEMA
            if (Session["Permisos"] == null)
            {
                TempData["LogueatePrimero"] = SystemField.NO_LOGUEADO;
                return RedirectToAction("Index", "ValidarLogin");
            }
            if (Session["Contraseña"] == null)
                {
                    return RedirectToAction("index", "INT_Principal");
                }
            return View();
        }
        [HttpPost]
        public ActionResult Index([Bind(Include = "ContraseñaAntigua,ContraseñaNueva,ContraseñaConfirmada")] ChangePasswordModel passwords)
        {
            //NO ESTOY LOGUEADO EN EL SISTEMA
            if (Session["Permisos"] == null)
            {
                TempData["LogueatePrimero"] = SystemField.NO_LOGUEADO;
                return RedirectToAction("Index", "ValidarLogin");
            }
            if (!ModelState.IsValid)
                {
                    return View();
                }

            string mycontraseña = (string)Session["Contraseña"];
            if (mycontraseña.Equals(gethash(passwords.ContraseñaAntigua)))
            {
                int iduser = (int)Session["IDUsuario"];
                db.Usuario.Find(iduser).Contraseña = gethash(passwords.ContraseñaConfirmada);
                db.SaveChanges();
                TempData["SECAMBIOCONTRASEÑA"] = @"Se realizo el cambio con exito de su contraseña";
                return RedirectToAction("Index", "MainPageEmployes");
            }
            else 
            {
                TempData["alertContraseñaIncorrecta"] = @"Esa no es su contraseña antigua";
                return View();
            }
        }

        private static string GetMd5Hash(MD5 md5Hash, string input)
        {

            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data 
            // and format each one as a hexadecimal string.
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            // Return the hexadecimal string.
            return sBuilder.ToString();
        }

        private static string gethash(string a)
        {
            using (MD5 md5Hash = MD5.Create())
            {
                return GetMd5Hash(md5Hash, a);

            }
        }


    }
}